package com.shop.cloud.domain.hongfu;

import java.sql.Timestamp;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.shop.cloud.common.mybatis.BaseEntity;

import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.ToString;

/**
 * 
 * goods-goods
 *
 */
@ToString
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"}, ignoreUnknown = true)
public class Goods extends BaseEntity{

	private static final long serialVersionUID = 1L;
	
	public static final int TYPE_HONGDOU = 1;	//1：鸿豆商品
	public static final int TYPE_POINTS = 2;		//2：积分商品
	public static final int TYPE_TRAVEL = 3;		//3：旅游商品
	public static final int TYPE_REBATE = 4;		//4：返利商品
	
	public static final int STATUS_WAIT_CHECK = 0;	//0：审核中
	public static final int STATUS_SELLING = 1;		//1：销售中
	public static final int STATUS_REJECT = 2;		//2：审核未通过
	public static final int STATUS_CLOSE = 3;		//3：已下架
	public static final int STATUS_DELETED = 4;		//4：已删除
    
	/**
	 * 商品种类表
1：鸿豆商品
2：积分商品
3：返利商品
	 */
	@ApiModelProperty(value = "商品种类表1：鸿豆商品2：积分商品3：返利商品")
	 private Integer type;
	/**
	 * 商品类别id
	 */
	@ApiModelProperty(value = "商品类别id")
	 private Long categoryId;
	/**
	 * 品牌id
	 */
	@ApiModelProperty(value = "品牌id")
	 private Long brandId;
	
	/**
	 * 商品名称
	 */
	@ApiModelProperty(value = "商品名称")
	 private String name;
	/**
	 * 商品详情
	 */
	@ApiModelProperty(value = "商品详情")
	 private String detail;
	/**
	 * 商品库存
	 */
	@ApiModelProperty(value = "商品库存")
	 private Integer inventory;
	/**
	 * 商品预警库存
	 */
	@ApiModelProperty(value = "商品预警库存")
	 private Integer warnedInventory;
	/**
	 * 商品剩余库存
	 */
	@ApiModelProperty(value = "商品剩余库存")
	 private Integer remainInventory;
	/**
	 * 商品价格
	 */
	@ApiModelProperty(value = "商品价格")
	 private Float price;
	/**
	 * 商品市场价格
	 */
	@ApiModelProperty(value = "商品市场价格")
	 private Float marketPrice;
	/**
	 * 商品规格
	 */
	@ApiModelProperty(value = "商品规格")
	 private String spec;
	/**
	 * 创建时间
	 */
	@ApiModelProperty(value = "创建时间")
	private Timestamp createTime;
	/**
	 * 是否旅游商品。
0：否
1：是
	 */
	@ApiModelProperty(value = "是否旅游商品。0：否1：是")
	 private Integer isTravelGoods;
	/**
	 * 旅游类型id，只对is_travel_goods=1有效
	 */
	@ApiModelProperty(value = "旅游类型id，只对is_travel_goods=1有效")
	 private Long travelTypeId;
	/**
	 * 出发地城市id，只对is_travel_goods=1有效
	 */
	@ApiModelProperty(value = "出发地城市id，只对is_travel_goods=1有效")
	 private String placeCityId;
	/**
	 * 是否特价商品，0否，1是
	 */
	@ApiModelProperty(value = "是否特价商品，0否，1是")
	 private Integer isSpecialPrice;
	
	/**
	 * 特价价格
	 */
	@ApiModelProperty(value = "特价价格")
	 private Float specialPrice;
	
	/**
	 * 特价开始时间
	 */
	@ApiModelProperty(value = "特价开始时间")
	 private Timestamp specialStartTime;
	
	/**
	 * 特价结束时间
	 */
	@ApiModelProperty(value = "特价结束时间")
	 private Timestamp specialEndTime;
	
	/**
	 * 好评率
	 */
	@ApiModelProperty(value = "好评率")
	 private Float review;
	/**
	 * 店铺id
	 */
	@ApiModelProperty(value = "店铺id")
	 private Long shopId;
	/**
	 * 商品状态
	 */
	@ApiModelProperty(value = "商品状态。0: 审核中 1:销售中，2审核未通过，3已下架，4已删除")
	 private int status;
	
	/**
	 * 是否开启分销
	 */
	@ApiModelProperty(value = "是否开启分销")
	 private int openDistribution;
	
	/**
	 * 关闭原因
	 */
	@ApiModelProperty(value = "关闭原因")
	 private String closeReason;
	/**
	 * 未通过原因
	 */
	@ApiModelProperty(value = "未通过原因")
	 private String rejectReason;
	
	/**	
	 * 出发地
	 */
	@ApiModelProperty(value = "出发地")
	private String startArea;
	
	@ApiModelProperty(value = "是否是分销产品")
	private String isOpenSpecial;
	
	@ApiModelProperty(value = "好评率排序：1：降序，2升序")
	private Integer isReview;
	
	@ApiModelProperty(value = "价格排序：1：价格高排序，2价格低排序")
	private Integer isPrice;
	
	@ApiModelProperty(value = "销量排序：1：销量高排序，2销量低排序")
	private Integer isSold;
	
	@ApiModelProperty(value = "综合排序：1：综合降序")
	private Integer isAll;
	
	private List<GoodsProduct> goodsProduct;
	
	private List<ProductSpec2> goodsProduct2;
	
	@ApiModelProperty(value = "已卖出")
	private Integer soldCount;
	@ApiModelProperty(value = "图片")
	private List<GoodsImage> goodsImages;
	
	@ApiModelProperty(value = "标题")
	private String remark;
	
	@ApiModelProperty(value = "分类名称")
	private String categoryName;
	
	private String title;
	
	private String firstPlace;
	
	private Long roleId;
	
	private String brandName;
	
	private String sysName;

	private int parentId;
	
	private List<String> shopIds;
	
	private String sId;
	
	private String installOne;

	private String installTwo;
	
	@ApiModelProperty(value = "配送方式   1：到店自提  2：快递配送 3：门店配送',")
	private String deliveryMethod;
	

	/**
	 * @return the installOne
	 */
	public String getInstallOne() {
		return installOne;
	}

	/**
	 * @param installOne the installOne to set
	 */
	public void setInstallOne(String installOne) {
		this.installOne = installOne;
	}

	/**
	 * @return the installTwo
	 */
	public String getInstallTwo() {
		return installTwo;
	}

	/**
	 * @param installTwo the installTwo to set
	 */
	public void setInstallTwo(String installTwo) {
		this.installTwo = installTwo;
	}

	public String getsId() {
		return sId;
	}

	public void setsId(String sId) {
		this.sId = sId;
	}

	public List<String> getShopIds() {
		return shopIds;
	}

	public void setShopIds(List<String> shopIds) {
		this.shopIds = shopIds;
	}

	/**
	 * @return the parentId
	 */
	public int getParentId() {
		return parentId;
	}

	/**
	 * @param parentId the parentId to set
	 */
	public void setParentId(int parentId) {
		this.parentId = parentId;
	}

	/**
	 * 用户经度
	 */
	@ApiModelProperty(value = "用户经度")
	private Float myLongitude;
	/**
	 * 用户纬度
	 */
	@ApiModelProperty(value = "用户纬度")
	private Float myLatitude;
	
	
	private int authority;

	/**
	 * @return the authority
	 */
	public int getAuthority() {
		return authority;
	}

	/**
	 * @param authority the authority to set
	 */
	public void setAuthority(int authority) {
		this.authority = authority;
	}

	public Float getMyLongitude() {
		return myLongitude;
	}

	public void setMyLongitude(Float myLongitude) {
		this.myLongitude = myLongitude;
	}

	public Float getMyLatitude() {
		return myLatitude;
	}

	public void setMyLatitude(Float myLatitude) {
		this.myLatitude = myLatitude;
	}

	/**
	 * @return the sysName
	 */
	public String getSysName() {
		return sysName;
	}

	/**
	 * @param sysName the sysName to set
	 */
	public void setSysName(String sysName) {
		this.sysName = sysName;
	}

	/**
	 * @return the brandName
	 */
	public String getBrandName() {
		return brandName;
	}

	/**
	 * @param brandName the brandName to set
	 */
	public void setBrandName(String brandName) {
		this.brandName = brandName;
	}

	/**
	 * @return the roleId
	 */
	public Long getRoleId() {
		return roleId;
	}

	/**
	 * @param roleId the roleId to set
	 */
	public void setRoleId(Long roleId) {
		this.roleId = roleId;
	}

	/**
	 * @return the goodsProduct2
	 */
	public List<ProductSpec2> getGoodsProduct2() {
		return goodsProduct2;
	}

	/**
	 * @param goodsProduct2 the goodsProduct2 to set
	 */
	public void setGoodsProduct2(List<ProductSpec2> goodsProduct2) {
		this.goodsProduct2 = goodsProduct2;
	}

	/**
	 * @return the title
	 */
	public String getTitle() {
		return title;
	}

	/**
	 * @param title the title to set
	 */
	public void setTitle(String title) {
		this.title = title;
	}

	/**
	 * @return the firstPlace
	 */
	public String getFirstPlace() {
		return firstPlace;
	}

	/**
	 * @param firstPlace the firstPlace to set
	 */
	public void setFirstPlace(String firstPlace) {
		this.firstPlace = firstPlace;
	}

	/**
	 * @return the categoryName
	 */
	public String getCategoryName() {
		return categoryName;
	}

	/**
	 * @param categoryName the categoryName to set
	 */
	public void setCategoryName(String categoryName) {
		this.categoryName = categoryName;
	}

	/**
	 * @return the remark
	 */
	public String getRemark() {
		return remark;
	}

	/**
	 * @param remark the remark to set
	 */
	public void setRemark(String remark) {
		this.remark = remark;
	}

	public List<GoodsImage> getGoodsImages() {
		return goodsImages;
	}

	public void setGoodsImages(List<GoodsImage> goodsImages) {
		this.goodsImages = goodsImages;
	}

	/**
	 * @return the isAll
	 */
	public Integer getIsAll() {
		return isAll;
	}

	/**
	 * @param isAll the isAll to set
	 */
	public void setIsAll(Integer isAll) {
		this.isAll = isAll;
	}

	/**
	 * @return the isSold
	 */
	public Integer getIsSold() {
		return isSold;
	}

	/**
	 * @param isSold the isSold to set
	 */
	public void setIsSold(Integer isSold) {
		this.isSold = isSold;
	}

	/**
	 * @return the soldCount
	 */
	public Integer getSoldCount() {
		return soldCount;
	}

	/**
	 * @param soldCount the soldCount to set
	 */
	public void setSoldCount(Integer soldCount) {
		this.soldCount = soldCount;
	}

	/**
	 * @return the goodsProduct
	 */
	public List<GoodsProduct> getGoodsProduct() {
		return goodsProduct;
	}

	/**
	 * @param goodsProduct the goodsProduct to set
	 */
	public void setGoodsProduct(List<GoodsProduct> goodsProduct) {
		this.goodsProduct = goodsProduct;
	}

	/**
	 * @return the isPrice
	 */
	public Integer getIsPrice() {
		return isPrice;
	}

	/**
	 * @param isPrice the isPrice to set
	 */
	public void setIsPrice(Integer isPrice) {
		this.isPrice = isPrice;
	}

	/**
	 * @return the isReview
	 */
	public Integer getIsReview() {
		return isReview;
	}

	/**
	 * @param isReview the isReview to set
	 */
	public void setIsReview(Integer isReview) {
		this.isReview = isReview;
	}

	public String getIsOpenSpecial() {
		return isOpenSpecial;
	}

	public void setIsOpenSpecial(String isOpenSpecial) {
		this.isOpenSpecial = isOpenSpecial;
	}

	public String getStartArea() {
		return startArea;
	}

	public void setStartArea(String startArea) {
		this.startArea = startArea;
	}

	private String keyword ;

	/**
	 * @return the keyword
	 */
	public String getKeyword() {
		return keyword;
	}

	/**
	 * @param keyword the keyword to set
	 */
	public void setKeyword(String keyword) {
		this.keyword = keyword;
	}

	public Goods(){
    
    }
    
    public Integer getType() {
        return this.type;
    }
    
    public void setType(Integer type) {
        this.type = type;
    }
    public Long getCategoryId() {
        return this.categoryId;
    }
    
    public void setCategoryId(Long categoryId) {
        this.categoryId = categoryId;
    }
    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    public String getDetail() {
        return this.detail;
    }
    
    public void setDetail(String detail) {
        this.detail = detail;
    }
    public Integer getInventory() {
        return this.inventory;
    }
    
    public void setInventory(Integer inventory) {
        this.inventory = inventory;
    }
    public Float getPrice() {
        return this.price;
    }
    
    public void setPrice(Float price) {
        this.price = price;
    }
    public Float getMarketPrice() {
        return this.marketPrice;
    }
    
    public void setMarketPrice(Float marketPrice) {
        this.marketPrice = marketPrice;
    }
    public String getSpec() {
        return this.spec;
    }
    
    public void setSpec(String spec) {
        this.spec = spec;
    }
    public Timestamp getCreateTime() {
        return this.createTime;
    }
    
    public void setCreateTime(Timestamp createTime) {
        this.createTime = createTime;
    }
    public Integer getIsTravelGoods() {
        return this.isTravelGoods;
    }
    
    public void setIsTravelGoods(Integer isTravelGoods) {
        this.isTravelGoods = isTravelGoods;
    }
    public Long getTravelTypeId() {
        return this.travelTypeId;
    }
    
    public void setTravelTypeId(Long travelTypeId) {
        this.travelTypeId = travelTypeId;
    }
    public String getPlaceCityId() {
        return this.placeCityId;
    }
    
    public void setPlaceCityId(String placeCityId) {
        this.placeCityId = placeCityId;
    }
    public Integer getIsSpecialPrice() {
        return this.isSpecialPrice;
    }
    
    public void setIsSpecialPrice(Integer isSpecialPrice) {
        this.isSpecialPrice = isSpecialPrice;
    }
    public Float getReview() {
        return this.review;
    }
    
    public void setReview(Float review) {
        this.review = review;
    }
    public Long getShopId() {
        return this.shopId;
    }
    
    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

	public Integer getRemainInventory() {
		return remainInventory;
	}

	public void setRemainInventory(Integer remainInventory) {
		this.remainInventory = remainInventory;
	}

	public Long getBrandId() {
		return brandId;
	}

	public void setBrandId(Long brandId) {
		this.brandId = brandId;
	}

	public int getStatus() {
		return status;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	public String getCloseReason() {
		return closeReason;
	}

	public void setCloseReason(String closeReason) {
		this.closeReason = closeReason;
	}

	public String getRejectReason() {
		return rejectReason;
	}

	public void setRejectReason(String rejectReason) {
		this.rejectReason = rejectReason;
	}

	public int getOpenDistribution() {
		return openDistribution;
	}

	public void setOpenDistribution(int openDistribution) {
		this.openDistribution = openDistribution;
	}

	public Integer getWarnedInventory() {
		return warnedInventory;
	}

	public void setWarnedInventory(Integer warnedInventory) {
		this.warnedInventory = warnedInventory;
	}

	public Float getSpecialPrice() {
		return specialPrice;
	}

	public void setSpecialPrice(Float specialPrice) {
		this.specialPrice = specialPrice;
	}

	public Timestamp getSpecialStartTime() {
		return specialStartTime;
	}

	public void setSpecialStartTime(Timestamp specialStartTime) {
		this.specialStartTime = specialStartTime;
	}

	public Timestamp getSpecialEndTime() {
		return specialEndTime;
	}

	public void setSpecialEndTime(Timestamp specialEndTime) {
		this.specialEndTime = specialEndTime;
	}

	public String getDeliveryMethod() {
		return deliveryMethod;
	}

	public void setDeliveryMethod(String deliveryMethod) {
		this.deliveryMethod = deliveryMethod;
	}
	
	

}